The Universal Serial Bus (“USB”) standard is a popular bus standard for connecting devices. USB is popular in part because a large selection of devices use it including servers, clients, serial devices, parallel devices, keyboards, mice, language devices, pointing devices, human input devices, video devices, audio devices, printers, scanners, network adapters and voice-over-Internet-Protocol (“VoIP”) devices. To allow these devices to function, a USB stack is required including a USB host controller driver.
Thin clients can provide efficient use of compute resources across multiple users and multiple locations. A thin client is made more useful by allowing USB devices to connect to it. However, executing a USB host controller driver on the thin client represents a certain level of complexity and cost for the thin client, and creates a software layer in the thin client that may need updates for new features, bugfixes, or security vulnerabilities. It would be useful to further simplify the thin client to reduce this cost of the thin client system, but still retain the ability to allow USB devices to connect to it.